Structured Reference String (SRS)

Let’s say we have a polynomial 3x3+5x23x^3 + 5x^2. Notice that we can evaluate it without knowing xx if we are given specifically x3x^3 and x2x^2. Obviously this is only interesting in a group.

We can take advantage of this to allow the evaluation of arbitrary polynomials at point τ\tau without exposing τ\tau. We do this by generating a list of powers of τ\tau e.g. [τ3,τ2,τ][\tau^3, \tau^2, \tau]. In order to actually hide τ\tau we must represent these elements as elements in some finite field. So we multiply each element by some generator GG for an elliptic curve G\mathbb{G}. S.t. we have [τ3G,τ2G,τG][\tau^3G, \tau^2G, \tau G]. If we then publish this list, anyone with it can evaluate a polynomial of degree up to 3 at the point τ\tau, without knowing τ\tau.

We refer to this list as a Structured Reference String, or a Common Reference String.

This SRS is the basis of many Zero-Knowledge Proofs. The entity which generates the SRS will know τ\tau and has the ability to forge proofs. As such, we refer to this process as Trusted Setup. One way to remove this vulnerability is to generate the SRS with a form of Multiparty Computation called a powers of tau ceremony.